/*************************************************
 * @autheur : CHOLLET Clément et LEMOUEL Florian *
 * @date    : 03.04.2013                         *
 * @version : 1.0 - Création de la classe        *
 *************************************************/

#ifndef MATERIAUX_H
#define MATERIAUX_H

/*********************************************************************
 * Importation de la bibliothèque QT relative aux primitives OPEN GL *
 *********************************************************************/
#include <QtOpenGL>
#include "lumiere.h"

/*********************************************************************************************************************************************
 *                                                          Classe de gestion des materiaux                                                  *
 *********************************************************************************************************************************************/
class Materiaux
{

    //-----------------------------------------------------Constructeurs et destructeurs-----------------------------------------------------//
    public:
        //Constructeur par défaut
        Materiaux();

    //----------------------------------------------------------------Méthodes---------------------------------------------------------------//
    public:
        //Active la couleur sur du materiaux
        void enable();
        //Désactive la couleur du materiaux
        void disable();

    //---------------------------------------------------------------Accesseurs--------------------------------------------------------------//
    public:
        //On affecte les composantes rouge, verte, bleue et le paramètre alpha à la couleur ambiante
        void setCouleurAmbiante(GLfloat rouge, GLfloat verte, GLfloat bleue, GLfloat alpha);

        //On affecte les composantes rouge, verte, bleue et le paramètre alpha à la couleur diffuse
        void setCouleurDiffuse(GLfloat rouge, GLfloat verte, GLfloat bleue, GLfloat alpha);

        //On affecte les composantes rouge, verte, bleue et le paramètre alpha à la couleur speculaire
        void setCouleurSpeculaire(GLfloat rouge, GLfloat verte, GLfloat bleue, GLfloat alpha);

        //On affecte une valeur à la variable _brillanceSpeculaire
        void setBrillanceSpeculaire(GLfloat valeur);

        //On affecte les composantes rouge, verte, bleue et le paramètre alpha à la couleur Emission
        void setCouleurEmission(GLfloat rouge, GLfloat verte, GLfloat bleue, GLfloat alpha);

    //-------------------------------------------------------Surcharge des opérateurs--------------------------------------------------------//
    public:

    //--------------------------------------------------------------Attributs----------------------------------------------------------------//
    private:
        GLfloat _couleurAmbiante[4];
        GLfloat _couleurDiffuse[4];
        GLfloat _couleurSpeculaire[4];
        GLfloat _brillanceSpeculaire;
        GLfloat _couleurEmission[4];
};

#endif // MATERIAUX_H
